/*
* Author: Chris Seguin
*
* This software has been developed under the copyleft
* rules of the GNU General Public License. Please
* consult the GNU General Public License for more
* details about use and distribution of this software.
*/
package org.acm.seguin.ide.jbuilder;
import java.util.Iterator;
import java.util.LinkedList;
import org.acm.seguin.ide.common.MultipleDirClassDiagramReloader;
/**
* New project adapter that adds source directories to the current reloader.
*
*@author Chris Seguin
*/
public class NewProjectAdapter extends BrowserAdapter {
private LinkedList list;
/**
* Constructor for the NewProjectAdapter object
*/
public NewProjectAdapter() {
list = new LinkedList();
}
/**
* A particular project was activated
*
*@param browser The browser that it was activated in
*@param project The project
*/
public void browserProjectActivated(Browser browser, Project project) {
if (!list.contains(project)) {
list.add(project);
if (project instanceof JBProject) {
MultipleDirClassDiagramReloader reloader =
UMLNodeViewerFactory.getFactory().getReloader();
JBProject jbProject = (JBProject) project;
registerProject(reloader, jbProject);
reloader.reload();
}
}
}
/**
* A project was closed in a particular browser
*
*@param browser the browser
*@param project the project
*/
public void browserProjectClosed(Browser browser, Project project) {
list.remove(project);
MultipleDirClassDiagramReloader reloader =
UMLNodeViewerFactory.getFactory().getReloader();
reloader.clear();
Iterator iter = list.iterator();
while (iter.hasNext()) {
JBProject jbProject = (JBProject) iter.next();
registerProject(reloader, jbProject);
}
}
/**
* Registers a project with the directory reloader
*
*@param reloader the reloader
*@param jbProject the JBuilder project
*/
private void registerProject(MultipleDirClassDiagramReloader reloader, JBProject jbProject) {
ProjectPathSet paths = jbProject.getPaths();
Url[] dirs = paths.getSourcePath();
for (int ndx = 0; ndx < dirs.length; ndx++) {
String directory = dirs[ndx].getFile();
reloader.addRootDirectory(directory);
}
}
}